/**~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * $Id$ 
 * Universidad de los Andes (Bogot� - Colombia)
 * Departamento de Ingenier�a de Sistemas y Computaci�n 
 * Licenciado bajo el esquema Academic Free License version 2.1 
 *
 * Proyecto Cupi2 (http://cupi2.uniandes.edu.co)
 * Ejercicio: n1_empleado 
 * Autor: Mario S�nchez - Jun 13, 2005 
 * Autor: Mario S�nchez - Jun 13, 2005
 * Autor: Pablo Barvo - 22/08/2005
 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 */

package uniandes.cupi2.empleado.interfaz;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;

/**
 * En este panel se muestran los datos del empleado
 */
public class PanelDatos extends JPanel {

	// -----------------------------------------------------------------
	// Atributos de la Interfaz
	// -----------------------------------------------------------------

	/**
	 * Etiqueta del nombre
	 */
	private JLabel labNombre;

	/**
	 * Etiqueta del apellido
	 */
	private JLabel labApellido;

	/**
	 * Etiqueta de la fecha de ingreso
	 */
	private JLabel labFIngreso;

	/**
	 * Etiqueta de la fecha de nacimiento
	 */
	private JLabel labFNacimiento;

	/**
	 * Etiqueta del sexo
	 */
	private JLabel labSexo;

	/**
	 * Campo de texto para el nombre
	 */
	private JTextField txtNombre;

	/**
	 * Campo de texto para el apellido
	 */
	private JTextField txtApellido;

	/**
	 * Campo de texto para la fecha de Ingreso
	 */
	private JTextField txtFIngreso;

	/**
	 * Campo de texto para la fecha de nacimiento
	 */
	private JTextField txtFNacimiento;

	/**
	 * Campo de texto para el sexo
	 */
	private JTextField txtSexo;

	/**
	 * Etiqueta donde se muestra la imagen
	 */
	private JLabel labImagen;

	// -----------------------------------------------------------------
	// Constructores
	// -----------------------------------------------------------------

	/**
	 * Construye el de Datos del empleado.
	 */
	public PanelDatos() {
		GridBagLayout gridbag = new GridBagLayout();
		setLayout(gridbag);
		setBorder(new CompoundBorder(new EmptyBorder(0, 0, 5, 0),
				new TitledBorder("Datos Personales")));

		GridBagConstraints gbc;

		labNombre = new JLabel("Nombre: ");
		gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST,
				GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0);
		add(labNombre, gbc);

		labApellido = new JLabel("Apellido: ");
		gbc = new GridBagConstraints(0, 1, 1, 1, 0, 0, GridBagConstraints.WEST,
				GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0);
		add(labApellido, gbc);

		labSexo = new JLabel("Sexo: ");
		gbc = new GridBagConstraints(0, 2, 1, 1, 0, 0, GridBagConstraints.WEST,
				GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0);
		add(labSexo, gbc);

		labFNacimiento = new JLabel("Fecha de Nacimiento: ");
		gbc = new GridBagConstraints(0, 3, 1, 1, 0, 0, GridBagConstraints.WEST,
				GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0);
		add(labFNacimiento, gbc);

		labFIngreso = new JLabel("Fecha de Ingreso: ");
		gbc = new GridBagConstraints(0, 4, 1, 1, 0, 0, GridBagConstraints.WEST,
				GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0);
		add(labFIngreso, gbc);

	}

	// -----------------------------------------------------------------
	// M�todos
	// -----------------------------------------------------------------

	/**
	 * Actualiza los campos del panel con la informaci�n del empleado. <br>
	 * <b>post: </b>Los campos muestran la nueva informaci�n. <br>
	 * 
	 * @param nombre
	 *            Nombre. nombre != null.
	 * @param apellido
	 *            Apellido. apellido != null.
	 * @param sexo
	 *            Sexo del empleado. sexo pertenece a {"m","f"}.
	 * @param fechaI
	 *            Fecha de Ingreso. fechaI != null.
	 * @param fechaN
	 *            Fecha de Nacimiento. fechaN != null.
	 * @param imagen
	 *            Ruta donde se encuentra la imagen. imagen != null.
	 */
	public void actualizarCampos(String nombre, String apellido, String sexo,
			String fechaI, String fechaN, String imagen) {
		txtNombre.setText(nombre);
		txtApellido.setText(apellido);
		txtSexo.setText(sexo);
		txtFIngreso.setText(fechaI);
		txtFNacimiento.setText(fechaN);

	}

	/**
	 * Este m�todo se usa para cargar la informaci�n de la imagen. Si no se leen
	 * los bytes de la imagen, entonces se depende del MediaTracker.
	 * 
	 * @param imagen
	 *            Ruta donde se encuentra la imagen. imagen!=null y imagen
	 *            corresponde a la ruta de una imagen.
	 * @return Retorna la imagen.
	 * @throws IOException
	 *             Se lanza esta excepci�n si no se puede leer la imagen.
	 */
	private byte[] cargarImagen(String imagen) throws IOException {

		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		FileInputStream fin = new FileInputStream(imagen);

		return baos.toByteArray();
	}

}
